package com.xshang.tenant;

import org.springframework.util.StringUtils;

import javax.sql.DataSource;

/**
 * 租户数据源服务接口：刷新租户数据源
 */
public interface TenantDataSourceService {
    /**
     * 刷新租户数据源：新增、更新、删除等，比如定时刷新
     */
    default void refresh() {

    }

    /**
     * 添加数据源到租户数据源中
     *
     * @param dataSourceName 数据源名称
     * @param dataSource 数据源
     */
    default void add(String dataSourceName, DataSource dataSource) {

    }

    /**
     * 更新租户数据源中的数据源
     *
     * @param dataSourceName 数据源名称
     * @param dataSource 数据源
     */
    default void update(String dataSourceName, DataSource dataSource) {

    }

    /**
     * 从租户数据源中移除指定的数据源
     *
     * @param dataSourceName 数据源名称
     */
    default void remove(String dataSourceName) {

    }

    /**
     * 获取指定租户的数据源对象名称(在spring容器中的名称)
     *
     * @param tenantId 租户id
     * @return 租户的数据源对象名称
     */
    default String getTenantDataSourceBeanName(String tenantId) {
        return StringUtils.hasText(tenantId) ? tenantId.trim() : "";
    }
}
